package cli;

import java.util.ArrayList;
import org.jdom2.Element;

public class PM {
	public static void main(String[] args) throws Exception {

		String chemin_csv = "";
		String chemin_xml = "";
		String chemin_rapport = "";
		String action = args[0];
		int i = 0;
		int j = 0;
		int k = 0;

		// Selon l'action à effectuer
		if (action.equals("importer")) {

			chemin_csv = args[1];
			chemin_xml = args[2];
			
			CSV csv = new CSV();
			String[] ligne2 = new String[10];

			try {
				
				// Lecture du fichier csv
				ArrayList<String[]> liste_brut = CSV.readCSVFile(chemin_csv);

				for (i = 0; i < liste_brut.size(); i++) {
					String[] ligne = liste_brut.get(i);

					ArrayList<String[]> liste_tmp = new ArrayList<String[]>();
					
					// Selon le type d'évenement de la ligne en cours
					if (ligne[1].equals("Hockey")) {
						ligne[1] = "";
						k = 0;
						
						// Mise en forme afin d'enlever les "" du tableau de string
						for (j = 0; j <= ligne.length - 1; j++) {
							if (!ligne[j].equals("")) {
								ligne2[k] = ligne[j];
								k++;
							}
						}
						// Ajout de la ligne à la liste temporaire ...
						liste_tmp.add(ligne2);
						
						// ... servant d'argument à la méthode permettant l'affectation des valeurs à des variables explicites
						ArrayList<Hockey> liste_hockey = csv.readHockey(liste_tmp, chemin_xml);
						
						// Vérification de l'existence de la tabvle db.xml, et dans le cas contraire création de la table
						XML.init(chemin_xml);
						
						// Ajout de la liste traitée et vérifiée à la table db.xml
						XML.ajoutHockeyXML(liste_hockey, chemin_xml);
					} else if (ligne[1].equals("Concert")) {
						ligne[1] = "";
						k = 0;
						for (j = 0; j <= ligne.length - 1; j++) {
							if (!ligne[j].equals("")) {
								ligne2[k] = ligne[j];
								k++;
							}
						}
						liste_tmp.add(ligne2);
						ArrayList<Concert> liste_concert = csv.readConcert(liste_tmp, chemin_xml);
						XML.init(chemin_xml);
						XML.ajoutConcertXML(liste_concert, chemin_xml);
					} else if (ligne[1].equals("Patinage")) {
						ligne[1] = "";
						k = 0;
						for (j = 0; j <= ligne.length - 1; j++) {
							if (!ligne[j].equals("")) {
								ligne2[k] = ligne[j];
								k++;
							}
						}
						liste_tmp.add(ligne2);
						ArrayList<Patinage> liste_patinage = csv.readPatinage(liste_tmp);
						XML.init(chemin_xml);
						XML.ajoutPatinageXML(liste_patinage, chemin_xml);
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else if (action.equals("reserver")) {
			chemin_csv = args[1];
			chemin_xml = args[2];

			CSV csv = new CSV();
			try {
				ArrayList<String[]> liste = CSV.readCSVFile(chemin_csv);
				ArrayList<Reservation> liste_reservation = csv.readReservation(liste, chemin_xml);
				XML.init(chemin_xml);
				XML.ajoutReservationXML(liste_reservation, chemin_xml);
			} catch (Exception e) {
				e.printStackTrace();
			}
		} else if (action.equals("manifestation")) {
			chemin_csv = args[2];
			chemin_xml = args[3];
			
			if (args[1].equals("concert")) {

				CSV csv = new CSV();
				try {
					ArrayList<String[]> liste = CSV.readCSVFile(chemin_csv);
					ArrayList<Concert> liste_concert = csv.readConcert(liste, chemin_xml);
					XML.init(chemin_xml);
					XML.ajoutConcertXML(liste_concert, chemin_xml);
				} catch (Exception e) {
					e.printStackTrace();
				}
			} else if (args[1].equals("hockey")) {
				
				CSV csv = new CSV();
				try {
					ArrayList<String[]> liste = CSV.readCSVFile(chemin_csv);
					ArrayList<Hockey> liste_hockey = csv.readHockey(liste, chemin_xml);
					XML.init(chemin_xml);
					XML.ajoutHockeyXML(liste_hockey, chemin_xml);
				} catch (Exception e) {
					e.printStackTrace();
				}
				
				// Usage de manifestation
			} else {
				System.out
						.println("Usage : java cli.PM anifestation ACTION_2 CHEMIN_CSV CHEMIN_XML");
				System.out.println("if ACTION_2 : concert, hockey");
			}
		// Rapport
		} else if (action.equals("rapport")) {
			chemin_xml = args[1];
			chemin_rapport = args[2];
			
			// Créer le squelette html
			Element body = Rapport.init(chemin_rapport);
			
			// Rempli le tableau avedc les informations de db.xml
			Rapport.createTable(body, chemin_xml);
			
			// Ajout du contenu html dans le fichier .html
			Rapport.enregistre(chemin_rapport);
		
		// Usage
		} else {
			System.out
					.println("Usage : java cli.PM ACTION_1 ACTION_2 CHEMIN_CSV CHEMIN_XML");
			System.out
					.println("ACTION_1 : importer, reserver, manifestation, rapport");
			System.out
					.println("if ACTION_1 = manifestation, ACTION_2 : concert, hockey");
		}
	}
}
